/**
 *
 * @param {*} type 钩子类型
 * @param {*} hook 钩子函数
 * @param {*} target vue实例
 */
function injectHook(type, hook, target) {
  if (target) {
    // 通过这句代码 发现最后代码其实挂载到实例上得
    const hooks = target[type] || (target[type] = [])
    hooks.push(hook)
  }
}

const createHook = (lifecycle) => {
  return (hook, target) => injectHook(lifecycle, hook, (target = currentInstance))
}

// 这个是需要导出的钩子函数
export const onMounted = createHook('m')
